const mysql = require('mysql')
const xss = require('xss')
const { MYSQL_CONF } = require('../conf/db')

const EXP_QOUTE = /^\'([\s\S]*)\'$/

// 创建连接对象
const con = mysql.createConnection(MYSQL_CONF)

// 开始连接
con.connect()

// 统一执行sql的函数
function exec(sql) {
  const promise = new Promise((resolve, reject) => {
    con.query(sql, (err, result) => {
      if (err) {
        reject(err)
        return
      }
      resolve(result)
    })
  })
  return promise
}

// 防止sql攻击 和 xss攻击
function escapeAndXSS(str) {
  let res = ''
  if (typeof str === 'string' && str !== '') {
    // 防止 sql 注入
    res = mysql.escape(str)

    // escape 会自动添加单引号，需要去掉
    const exp = EXP_QOUTE.exec(res)
    if (exp) {
      res = exp[1]
    }
    
    res = xss(res)
  }
  
  return res
}

module.exports = {
  exec,
  escapeAndXSS
}
